﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class PersonaControlador
    {
        private static PersonaControlador instance;
        Persona p;

        public PersonaControlador()
        {
            p = new Persona();
        }

        public static PersonaControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new PersonaControlador();
                }

                return instance;
            }
        }

        public bool eliminarFuncionario(string rut)
        {
            bool resultado = false;
            try
            {
                
                SqlCommand com = new SqlCommand("DELETE FROM FUNCIONARIO WHERE RUN = '" + rut + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    resultado = true;
                }
                Conexion.Instance.Con.Close();
                return resultado;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return resultado;
                throw;
            }            
        } 


        public Persona buscarPersona(string rut)
        {
            try
            {
                SqlCommand com = new SqlCommand();

                com.CommandText = "select * from PERSONA where RUN='" + rut + "'";
                com.Connection = Conexion.Instance.Con;

                SqlDataReader ejecuta = com.ExecuteReader();

                if (ejecuta.Read() == true)
                {
                    p.Run = ejecuta.GetString(ejecuta.GetOrdinal("RUN"));
                    p.Nombre = ejecuta.GetString(ejecuta.GetOrdinal("NOMBRE"));
                    p.ApellidoPaterno = ejecuta.GetString(ejecuta.GetOrdinal("APELLIDOPATERNO"));
                    p.ApellidoMaterno = ejecuta.GetString(ejecuta.GetOrdinal("APELLIDOMATERNO"));
                    p.FechaNacimiento = ejecuta.GetDateTime(ejecuta.GetOrdinal("FECHANACIMIENTO"));
                    string TEMP = ejecuta.GetString(ejecuta.GetOrdinal("FECHANACIMIENTO"));
                    p.Sexo = TEMP[0];                    
                    Conexion.Instance.Con.Close();
                    return p;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return null;
                throw;
            }
        }

        public bool ingresarPersona(string RUN, string NOMBRE, string APELLIDOPATERNO, string APELLIDOMATERNO, DateTime FECHANACIMIENTO, char SEXO)
        {
            /*string RUN, ESPECIALIDAD_MEDICA, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, DISPONIBILIDAD_FUNCIONARIO;
            char SEXO;
            DateTime FECHANACIMIENTO;*/

            //if(FuncionarioControlador.Instance.)
            try
            {
                SqlCommand busqueda = new SqlCommand("Select * from PERSONA where RUN='" + RUN+"'");
                busqueda.Connection = Conexion.Instance.Con;
                using(busqueda.Connection)
                {
                    SqlDataReader buscador = busqueda.ExecuteReader();

                    if (buscador.Read())
                    {
                        p.Nombre=buscador.GetString(buscador.GetOrdinal("NOMBRE"));
                        return true;
                    }
                    else
                    {
                        SqlCommand com = new SqlCommand();


                        com.CommandText = "INSERT INTO PERSONA" +
                            "(RUN, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO,FECHANACIMIENTO,SEXO)" + "VALUES" +
                            "(@run, @nombre, @apellidopaterno, @apellidomaterno, @fechanacimiento,@sexo)";

                        com.Parameters.AddWithValue("@run", RUN);
                        //com.Parameters.AddWithValue("@especialidad_medica", ESPECIALIDAD_MEDICA);
                        com.Parameters.AddWithValue("@nombre", NOMBRE);
                        com.Parameters.AddWithValue("@apellidopaterno", APELLIDOPATERNO);
                        com.Parameters.AddWithValue("@apellidomaterno", APELLIDOMATERNO);
                        com.Parameters.AddWithValue("@sexo", SEXO);
                        com.Parameters.AddWithValue("@fechanacimiento", FECHANACIMIENTO);
                        //com.Parameters.AddWithValue("@disponibilidad_funcionario", DISPONIBILIDAD_FUNCIONARIO);

                        com.Connection = Conexion.Instance.Con;
                        SqlDataReader ejecutar = com.ExecuteReader();
                        Conexion.Instance.Con.Close();
                        return true;
                    }
                }
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
        }
    }
}
